package com.zhongwang.mms.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * 生成字符串工具类
 */
public class GenStringUtils {
    /**
     * 格式化串入时间时间为「年月日时分秒毫秒微秒」字符串（格式：yyyyMMddHHmmssSSS）
     * @param date 是传入的时间
     * @return 示例：20251104091622289305（2025是年，11是月，04是日，09是小时，16是分钟，22是秒，289是毫秒，305是微秒）
     */
    public static String formatWithMicros(Date date) {
        // 1. 设置格式化字符格式到毫秒
        SimpleDateFormat sdf = new SimpleDateFormat(
                "yyyyMMddHHmmssSSS", // 时分秒.毫秒（3位）
                Locale.CHINA
        );
        // 2.设置时区（避免时区偏移）
        sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        // 3. 格式化时分秒毫秒（SimpleDateFormat 处理）
        String dateStr = sdf.format(date);
        // 4. 获取真实微秒（从纳秒计算：1微秒=1000纳秒）
        long nanoTime = System.nanoTime();
        // 取后6位纳秒 → 转为微秒（0-999）
        int micros = (int) ((nanoTime % 1000000) / 1000);
        // 3. 补充微秒（不足3位补0），拼接成完整字符串
        return String.format("%s%03d", dateStr, micros);
    }
}
